package homework.day01;

import java.util.Locale;
import java.util.Random;
import java.util.Scanner;

/**
 * 生成一个4位验证码(数字和字母的组合)
 * 然后输出到控制台并提示用户输入该验证码，只要用户输入正确(无论大小写都算)，
 * 就输出:验证码正确，否则输出:验证码错误
 * 
 * 
 * 验证码如何生成?
 * 思路导向填空:
 * 1:要先确定生成的内容范围(列出所有可以出现的字符):
 * 	 
 * 2:先思考如何生成其中的一个字符呢？
 *   2.1:确定怎么保存这些可以出现的字符:
 *   
 *   2.2:怎么能随机抽选一个
 *   
 * 3:既然可以生成一个，如何做到生成4个或更多个?  
 *  
 * 4:怎么在生成这些字符的过程中将他们组成一个字符串?
 * 
 * 5:获取到用户输入的字符串后怎么与之比较,要利用到哪些字符串操作?
 * 
 * 
 * @author Xiloer
 *
 */
public class Test06 {

	public static void main(String[] args) {
		String str = "abcdefghijklmnop01234qrstuvwxyzABCDEFGHIJKL56789MNOPQRSTUVWXYZ";
		Random random = new Random();
		String st  = "";
		for (int i=0;i<4;i++){
			int x = random.nextInt(str.length());
			char s = str.charAt(x);
			st = st + s;
		}
		System.out.println(st);
		Scanner scanner = new Scanner(System.in);
		System.out.println("请输入验证码：");
		String sc = scanner.nextLine();
		check(st,sc);

//		Random random = new Random();
//		Scanner scanner = new Scanner(System.in);
//		StringBuilder builder = new StringBuilder();
//		for (int i=0;i<4;i++){
//			int a = random.nextInt(2);
//			switch (a){
//				case 0:
//					builder.append(az());
//					break;
//				case 1:
//					int y = random.nextInt(10);
//					String value = String.valueOf(y);
//					builder.append(value);
//					break;
//			}
//		}
//		System.out.println("验证码"+builder);
//		String str = builder.toString();
//		System.out.println("请输入验证码：");
//		String code = scanner.next();
//		check(str,code);
	}
	public static void check(String num1, String num2){
		String upper1 = num1.toUpperCase(Locale.ROOT);
		String upper2 = num2.toUpperCase(Locale.ROOT);
		if (upper1.equals(upper2)){
			System.out.println("验证码正确");
		}else {
			System.out.println("验证码错误");
		}
	}
	public static String az(){
		char a = 'A', z = 'z';        // 65-122
		int a1 = a, a2 = z;
		Random random = new Random();
		int x = random.nextInt(a2-a1+1)+a1;
		if (x>=91 && x<=96){    //剔除91-96特殊字符
			az();
			return az();
		}
		char num = (char)x;
		String y = String.valueOf(num);
		return y;
	}
}






